What is @radix-ui/react-portal?
The @radix-ui/react-portal package is a React component library that allows you to render components in a different part of the DOM than their parent components. This is particularly useful for rendering modals, tooltips, and other floating elements that need to break out of the normal document flow to avoid issues with overflow, z-index, and CSS inheritance.
What are @radix-ui/react-portal's main functionalities?
Rendering children in a portal
This feature allows you to render a React component or any JSX outside of its parent component's DOM hierarchy. The code sample demonstrates how to use the Portal component to render a div element at the end of the document body.
{"import { Portal } from '@radix-ui/react-portal';\n\nconst MyComponent = () => (\n <Portal>\n <div>\n This will be rendered outside the parent DOM hierarchy.\n </div>\n </Portal>\n);"}
Other packages similar to @radix-ui/react-portal
react-portal
The 'react-portal' package provides similar functionality to '@radix-ui/react-portal' by allowing elements to be rendered in a portal. It is a more established package with a larger user base, but '@radix-ui/react-portal' is part of the Radix UI design system, which might offer better integration with other Radix components.
react-dom
While not a direct equivalent, 'react-dom' provides the 'createPortal' API which is the underlying React feature that '@radix-ui/react-portal' and other portal libraries utilize to render components in different parts of the DOM. 'react-dom' is a part of the official React library.
react-portal
Installation
$ yarn add @radix-ui/react-portal
$ npm install @radix-ui/react-portal
Usage
View docs here.